<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Code signing</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Code_signing"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Code_signing rootpage-Code_signing skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Code signing</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<p><b>Code signing</b> is the process of digitally <a href="Digital_signatures_and_law" class="mw-redirect" title="Digital signatures and law">signing</a> <a href="Executable" title="Executable">executables</a> and <a href="Scripting_language" title="Scripting language">scripts</a> to confirm the software author and guarantee that the code has not been altered or corrupted since it was signed. The process employs the use of a <a href="Cryptographic_hash_function" title="Cryptographic hash function">cryptographic hash</a> to validate authenticity and integrity.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Code signing was invented in 1995 by Michael Doyle, as part of the <a href="Eolas" title="Eolas">Eolas</a> WebWish browser plug-in, which enabled the use of public-key cryptography to sign downloadable Web app program code using a secret key, so the plug-in code interpreter could then use the corresponding public key to authenticate the code before allowing it access to the code interpreter's APIs. <sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> <sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p><p>Code signing can provide several valuable features. The most common use of code signing is to provide security when deploying; in some programming languages, it can also be used to help prevent namespace conflicts. Almost every code signing implementation will provide some sort of digital signature mechanism to verify the identity of the author or build system, and a <a href="Checksum" title="Checksum">checksum</a> to verify that the object has not been modified. It can also be used to provide versioning information about an object or to store other <a href="Metadata" title="Metadata">metadata</a> about an object.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p><p>The efficacy of code signing as an authentication mechanism for software depends on the security of underpinning signing keys. As with other <a href="Public_key_infrastructure" title="Public key infrastructure">public key infrastructure (PKI)</a> technologies, the integrity of the system relies on publishers securing their private keys against unauthorized access. Keys stored in software on general-purpose computers are susceptible to compromise. Therefore, it is more secure, and best practice, to store keys in secure, tamper-proof, cryptographic hardware devices known as hardware security modules or <a href="Hardware_security_module" title="Hardware security module">HSMs</a>.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Providing_security">Providing security</h2></div>
<p>Many code signing implementations will provide a way to sign the code using a system involving a pair of keys, one public and one private, similar to the process employed by <a href="Transport_Layer_Security" title="Transport Layer Security">TLS</a> or <a href="Secure_Shell" title="Secure Shell">SSH</a>. For example, in the case of .NET, the developer uses a private key to sign their libraries or executables each time they build. This key will be unique to a developer or group or sometimes per application or object. The developer can either generate this key on their own or obtain one from a trusted <a href="Certificate_authority" title="Certificate authority">certificate authority</a> (CA).<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p><p>Code signing is particularly valuable in distributed environments, where the source of a given piece of code may not be immediately evident - for example <a href="Java_applet" title="Java applet">Java applets</a>, <a href="ActiveX" title="ActiveX">ActiveX</a> controls and other active web and browser scripting code. Another important usage is to safely provide updates and patches to existing software.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a>, <span class="nowrap"><a href="Mac_OS_X" class="mw-redirect" title="Mac OS X">Mac OS X</a></span>, and most <a href="Linux_distributions" class="mw-redirect" title="Linux distributions">Linux distributions</a> provide updates using code signing to ensure that it is not possible for others to maliciously distribute code via the patch system. It allows the receiving operating system to verify that the update is legitimate, even if the update was delivered by third parties or physical media (disks).<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p><p>Code signing is used on Windows and Mac OS X to authenticate software on first run, ensuring that the software has not been maliciously tampered with by a third-party distributor or download site. This form of code signing is not used on Linux because of that platform's decentralized nature, the <a href="Package_manager" title="Package manager">package manager</a> being the predominant mode of distribution for all forms of software (not just updates and patches), as well as the <a href="Open-source_model" class="mw-redirect" title="Open-source model">open-source model</a> allowing direct inspection of the source code if desired. <a href="Debian" title="Debian">Debian</a>-based Linux distributions (among others) validate downloaded packages using public key cryptography.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Trusted_identification_using_a_certificate_authority_(CA)">Trusted identification using a certificate authority (CA)</h3></div>
<p>The <a href="Public_key" class="mw-redirect" title="Public key">public key</a> used to authenticate the code signature should be traceable back to a trusted root authority CA, preferably using a secure <a href="Public_key_infrastructure" title="Public key infrastructure">public key infrastructure</a> (PKI). This does not ensure that the code itself can be trusted, only that it comes from the stated source (or more explicitly, from a particular <a href="Private_key" class="mw-redirect" title="Private key">private key</a>).<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> A CA provides a root trust level and is able to assign trust to others by proxy. If a user trusts a CA, then the user can presumably trust the legitimacy of code that is signed with a key generated by that CA or one of its proxies. Many operating systems and frameworks contain built-in trust for one or more certification authorities. It is also commonplace for large organizations to implement a private CA, internal to the organization, which provides the same features as public CAs, but it is only trusted within the organization.
</p>
<div class="mw-heading mw-heading3"><h3 id="Extended_validation_(EV)_code_signing">Extended validation (EV) code signing</h3></div>
<p><a href="Extended_validation" class="mw-redirect" title="Extended validation">Extended validation</a> (EV) code signing certificates are subject to additional validation and technical requirements. These guidelines are based on the CA/B Forum's Baseline Requirements and Extended Validation Guidelines. In addition to validation requirements specific to EV, the EV code signing guidelines stipulate that "the Subscriber's private key is generated, stored and used in a crypto module that meets or exceeds the requirements of FIPS 140-2 level 2."<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>
</p><p>Certain applications, such as signing Windows 10 kernel-mode drivers, require an EV code signing certificate.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> Additionally, Microsoft's IEBlog states that Windows programs "signed by an EV code signing certificate can immediately establish reputation with <a href="SmartScreen" class="mw-redirect" title="SmartScreen">SmartScreen</a> reputation services even if no prior reputation exists for that
file or publisher."<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading4"><h4 id="Sample_EV_code_signing_certificate">Sample EV code signing certificate</h4></div>
<p>This is an example of a decoded EV code signing certificate used by SSL.com to sign software. <code>SSL.com EV Code Signing Intermediate CA RSA R3</code> is shown as the Issuer's commonName, identifying this as an EV code signing certificate. The certificate's <code>Subject</code> field describes SSL Corp as an organization. <code>Code Signing</code> is shown as the sole X509v3 Extended Key Usage.
</p>
<pre>Certificate:
Data:
Version: 3 (0x2)
Serial Number:
59:4e:2d:88:5a:2c:b0:1a:5e:d6:4c:7b:df:35:59:7d
Signature Algorithm: sha256WithRSAEncryption
Issuer:
commonName = SSL.com EV Code Signing Intermediate CA RSA R3
organizationName = SSL Corp
localityName = Houston
stateOrProvinceName = Texas
countryName = US
Validity
Not Before: Aug 30 20:29:13 2019 GMT
Not After : Nov 12 20:29:13 2022 GMT
Subject:
1.3.6.1.4.1.311.60.2.1.3 = US
1.3.6.1.4.1.311.60.2.1.2 = Nevada
streetAddress = 3100 Richmond Ave Ste 503
businessCategory = Private Organization
postalCode = 77098
commonName = SSL Corp
serialNumber = NV20081614243
organizationName = SSL Corp
localityName = Houston
stateOrProvinceName = Texas
countryName = US
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:c3:e9:ae:be:d7:a2:6f:2f:24 ...
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Authority Key Identifier:
keyid:36:BD:49:FF:31:2C:EB:AF:6A:40:FE:99:C0:16:ED:BA:FC:48:DD:5F
Authority Information Access:
CA Issuers - URI:http://www.ssl.com/repository/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crt
OCSP - URI:http://ocsps.ssl.com
X509v3 Certificate Policies:
Policy: 2.23.140.1.3
Policy: 1.2.616.1.113527.2.5.1.7
Policy: 1.3.6.1.4.1.38064.1.3.3.2
CPS: https://www.ssl.com/repository
X509v3 Extended Key Usage:
Code Signing
X509v3 CRL Distribution Points:
Full Name:
URI:http://crls.ssl.com/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crl
X509v3 Subject Key Identifier:
EC:6A:64:06:26:A7:7A:69:E8:CC:06:D5:6F:FA:E1:C2:9A:29:79:DE
X509v3 Key Usage: critical
Digital Signature
Signature Algorithm: sha256WithRSAEncryption
17:d7:a1:26:58:31:14:2b:9f:3b ...
</pre>
<div class="mw-heading mw-heading3"><h3 id="Alternative_to_CAs">Alternative to CAs</h3></div>
<p>The other model is the <a href="Trust_on_first_use" title="Trust on first use">trust on first use</a> model, in which developers can choose to provide their own self-generated key. In this scenario, the user would normally have to obtain the public key in some fashion directly from the developer to verify the object is from them for the first time. Many code signing systems will store the public key inside the signature. Some software frameworks and OSs that check the code's signature before executing will allow you to choose to trust that developer from that point on after the first run. An application developer can provide a similar system by including the public keys with the installer. The key can then be used to ensure that any subsequent objects that need to run, such as upgrades, plugins, or another application, are all verified as coming from that same developer.
</p>
<div class="mw-heading mw-heading3"><h3 id="Time-stamping">Time-stamping</h3></div>
<p>Time-stamping was designed to circumvent the trust warning that will appear in the case of an expired certificate. In effect, time-stamping extends the code trust beyond the validity period of a certificate.<sup id="cite_ref-morton_14-0" class="reference"><a href="#cite_note-morton-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</p><p>In the event that a certificate has to be revoked due to a compromise, a specific date and time of the compromising event will become part of the revocation record. In this case, time-stamping helps establish whether the code was signed before or after the certificate was compromised.<sup id="cite_ref-morton_14-1" class="reference"><a href="#cite_note-morton-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Code_signing_in_Xcode">Code signing in <a href="Xcode" title="Xcode">Xcode</a></h3></div>
<p>Developers need to sign their <a href="IOS" title="IOS">iOS</a> and tvOS apps before running them on any real device and before uploading them to the <a href="App_Store_(iOS)" class="mw-redirect" title="App Store (iOS)">App Store</a>. This is needed to prove that the developer owns a valid Apple Developer ID. An application needs a valid profile or certificate so that it can run on the devices.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Problems">Problems</h3></div>
<p>Like any security measure, code signing can be defeated. Users can be tricked into running unsigned code, or even into running code that refuses to validate, and the system only remains secure as long as the private key remains private.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>
</p><p>It is also important to note that code signing does not protect the end user from any malicious activity or unintentional software bugs by the software author — it merely ensures that the software has not been modified by anyone other than the author. Sometimes, sandbox systems do not accept certificates, because of a false time-stamp or because of an excess usage of <a href="Random-access_memory" title="Random-access memory">RAM</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Implementations">Implementations</h2></div>
<p>Microsoft implements a form of code signing (based on Authenticode) provided for Microsoft tested drivers. Since drivers run in the kernel, they can destabilize the system or open the system to security holes. For this reason, Microsoft tests drivers submitted to its <a href="WHQL_Testing" title="WHQL Testing">WHQL program</a>. After the driver has passed, Microsoft signs that version of the driver as being safe. On 32-bit systems only, installing drivers that are not validated with Microsoft is possible after agreeing to allow the installation at a prompt warning the user that the code is unsigned. For .NET (managed) code, there is an additional mechanism called <a href="Strong_key" title="Strong key">Strong Name Signing</a> that uses Public/Private keys and <a href="SHA-1" title="SHA-1">SHA</a>-1 hash as opposed to certificates. However, Microsoft discourages reliance on Strong Name Signing as a replacement for Authenticode.<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>
</p><p>The Code Signing Working Group of the CA/Browser Forum decided that starting June 1, 2023, all code signing certificates (not only the EA ones) should mandate private key storage on a physical media, such as in a hardware crypto module conforming to at least FIPS 140-2 Level 2 or Common Criteria EAL 4+.<sup id="cite_ref-baselinereq_19-0" class="reference"><a href="#cite_note-baselinereq-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup> The CAs subsequently issued announcements on compliance with the decision.<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Unsigned_code_in_gaming_and_consumer_devices">Unsigned code in gaming and consumer devices</h2></div>
<p>In the context of consumer devices such as <a href="Handheld_game_console" title="Handheld game console">games consoles</a>, the term "unsigned code" is often used to refer to an application which has not been signed with the <a href="Key_(cryptography)" title="Key (cryptography)">cryptographic key</a> normally required for software to be accepted and executed. Most console games have to be signed with a secret key designed by the console maker or the game will not load on the console (both to enforce <a href="Vendor_lock-in" title="Vendor lock-in">Vendor lock-in</a> and combat software piracy). There are several methods to get unsigned code to execute which include software <a href="Exploit_(computer_security)" title="Exploit (computer security)">exploits</a>, the use of a <a href="Modchip" title="Modchip">modchip</a>, a technique known as the swap trick or running a <a href="Softmod" title="Softmod">softmod</a>.
</p><p>It may not initially seem obvious why simply copying a signed application onto another DVD does not allow it to boot. On the <a href="Xbox_(console)" title="Xbox (console)">Xbox</a>, the reason for this is that the Xbox executable file (XBE) contains a media-type flag, which specifies the type of media that the XBE is bootable from. On nearly all Xbox software, this is set such that the executable will only boot from factory-produced discs, so simply copying the executable to burnable media is enough to stop the execution of the software.
</p><p>However, since the executable is signed, simply changing the value of the flag is not possible as this alters the signature of the executable, causing it to fail validation when checked.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Digital_signature" title="Digital signature">Digital signature</a></li>
<li><a href="IOS_jailbreaking" title="IOS jailbreaking">iOS jailbreaking</a></li>
<li><a href="PlayStation_Portable_homebrew" title="PlayStation Portable homebrew">PlayStation Portable homebrew</a></li>
<li><a href="Privilege_escalation" title="Privilege escalation">Privilege escalation</a></li>
<li><a href="Rooting_(Android_OS)" class="mw-redirect" title="Rooting (Android OS)">Rooting (Android OS)</a></li>
<li><a href="Symbian_OS" class="mw-redirect" title="Symbian OS">Symbian OS Security bypass</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/ms537361(v=vs.85)">"Introduction to Code Signing (Windows)"</a>. <i>learn.microsoft.com</i>. August 15, 2017. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20240206174843/https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/ms537361%28v=vs.85%29">Archived</a> from the original on February 6, 2024<span class="reference-accessdate">. Retrieved <span class="nowrap">March 13,</span> 2024</span>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://archive.org/details/dr_dobbs_journal-1996_02/page/22/mode/2up">"WebWish: Our Wish is Your Command"</a>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text">Schroeder, H and Doyle, M. “Interactive Web Applications with Tcl/Tk”. Academic Professional, Boston, 1998, p. 14, ISBN: 0122215400.</span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFHendric2015" class="citation web cs1">Hendric, William (2015). <a rel="nofollow" class="external text" href="https://www.cabforum.org/wp-content/uploads/Baseline_Requirements_V1.pdf">"A Complete overview of Trusted Certificates - CABForum"</a> <span class="cs1-format">(PDF)</span>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190422034649/https://www.cabforum.org/wp-content/uploads/Baseline_Requirements_V1.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 2019-04-22<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-02-26</span></span>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.thawte.com/code-signing/whitepaper/best-practices-for-code-signing-certificates.pdf">"Securing your Private Keys as Best Practice for Code Signing Certificates"</a> <span class="cs1-format">(PDF)</span>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite id="CITEREFHendric2011" class="citation web cs1">Hendric, William (17 June 2011). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180620134345/https://www.instantssl.com/code-signing-certificate.html">"What is Code Signing?"</a>. Archived from <a rel="nofollow" class="external text" href="https://www.instantssl.com/code-signing-certificate.html">the original</a> on 20 June 2018<span class="reference-accessdate">. Retrieved <span class="nowrap">26 February</span> 2015</span>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://learn.microsoft.com/en-us/windows/win32/msi/digital-signatures-and-windows-installer">"Digital Signatures and Windows Installer - Win32 apps"</a>. <i>learn.microsoft.com</i>. January 7, 2021. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20240130124058/https://learn.microsoft.com/en-us/windows/win32/msi/digital-signatures-and-windows-installer">Archived</a> from the original on January 30, 2024<span class="reference-accessdate">. Retrieved <span class="nowrap">March 13,</span> 2024</span>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite id="CITEREFwindows-driver-content2022" class="citation web cs1">windows-driver-content (2022-05-18). <a rel="nofollow" class="external text" href="https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-secure-boot-key-creation-and-management-guidance?view=windows-11">"Windows Secure Boot Key Creation and Management Guidance"</a>. <i>learn.microsoft.com</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20231030201531/https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-secure-boot-key-creation-and-management-guidance?view=windows-11">Archived</a> from the original on 2023-10-30<span class="reference-accessdate">. Retrieved <span class="nowrap">2023-09-22</span></span>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://wiki.debian.org/SecureApt">"SecureApt - Debian Wiki"</a>. <i>wiki.debian.org</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190507185429/https://wiki.debian.org/SecureApt">Archived</a> from the original on 2019-05-07<span class="reference-accessdate">. Retrieved <span class="nowrap">2019-05-07</span></span>.</cite></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://casecurity.org/wp-content/uploads/2013/10/CASC-Code-Signing.pdf">"Code signing"</a> <span class="cs1-format">(PDF)</span>. 2014-02-26. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20140226191729/https://casecurity.org/wp-content/uploads/2013/10/CASC-Code-Signing.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 2014-02-26<span class="reference-accessdate">. Retrieved <span class="nowrap">2014-02-21</span></span>.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://cabforum.org/wp-content/uploads/EV-Code-Signing-v.1.4.pdf">"Guidelines For The Issuance And Management Of Extended Validation Code Signing Certificates"</a> <span class="cs1-format">(PDF)</span>. CA/Browser Forum. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20191127122729/https://cabforum.org/wp-content/uploads/EV-Code-Signing-v.1.4.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 27 November 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">4 December</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/windows-hardware/drivers/install/kernel-mode-code-signing-policy--windows-vista-and-later-">"Driver Signing Policy"</a>. Microsoft. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20191209153504/https://docs.microsoft.com/en-us/windows-hardware/drivers/install/kernel-mode-code-signing-policy--windows-vista-and-later-">Archived</a> from the original on 9 December 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">9 December</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://blogs.msdn.microsoft.com/ie/2012/08/14/microsoft-smartscreen-extended-validation-ev-code-signing-certificates/">"Microsoft SmartScreen & Extended Validation (EV) Code Signing Certificates"</a>. Microsoft. 14 August 2012. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20191209153510/https://blogs.msdn.microsoft.com/ie/2012/08/14/microsoft-smartscreen-extended-validation-ev-code-signing-certificates/">Archived</a> from the original on 9 December 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">9 December</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-morton-14"><span class="mw-cite-backlink">^ <a href="#cite_ref-morton_14-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-morton_14-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFMorton" class="citation web cs1">Morton, Bruce. <a rel="nofollow" class="external text" href="https://casecurity.org/wp-content/uploads/2013/10/CASC-Code-Signing.pdf">"Code Signing"</a> <span class="cs1-format">(PDF)</span>. CASC. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20140226191729/https://casecurity.org/wp-content/uploads/2013/10/CASC-Code-Signing.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 26 February 2014<span class="reference-accessdate">. Retrieved <span class="nowrap">21 February</span> 2014</span>.</cite></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.developer.apple.com/documentation/xcode/distributing-your-app-to-registered-devices">"Distributing your app to registered devices"</a>. <i>Apple Developer Documentation</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20240313192757/https://developer.apple.com/documentation/xcode/distributing-your-app-to-registered-devices">Archived</a> from the original on 2024-03-13<span class="reference-accessdate">. Retrieved <span class="nowrap">2024-01-15</span></span>.</cite></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://blog.trendmicro.com/fake-antivirus-solutions-increasingly-stolen-code-signing-certificates/">"Fake antivirus solutions increasingly have stolen code-signing certificates"</a>. 9 January 2014. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20140416092107/http://blog.trendmicro.com/fake-antivirus-solutions-increasingly-stolen-code-signing-certificates/">Archived</a> from the original on 16 April 2014<span class="reference-accessdate">. Retrieved <span class="nowrap">14 April</span> 2014</span>.</cite></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external free" href="http://www.eweek.com/c/a/Security/Theres-A-Racket-Brewing-In-the-Code-Signing-Cert-Business/">http://www.eweek.com/c/a/Security/Theres-A-Racket-Brewing-In-the-Code-Signing-Cert-Business/</a> </span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://learn.microsoft.com/en-us/archive/blogs/shawnfa/">".NET Security Blog"</a>. <i>learn.microsoft.com</i>. August 6, 2021. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20240119012321/https://learn.microsoft.com/en-us/archive/blogs/shawnfa/">Archived</a> from the original on January 19, 2024<span class="reference-accessdate">. Retrieved <span class="nowrap">March 13,</span> 2024</span>.</cite></span>
</li>
<li id="cite_note-baselinereq-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-baselinereq_19-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://cabforum.org/uploads/Baseline-Requirements-for-the-Issuance-and-Management-of-Code-Signing.v3.7.pdf">"Baseline Requirements for the Issuance and Management of Publicly-Trusted Code Signing Certificates"</a> <span class="cs1-format">(PDF)</span>. CA/Browser Forum. 2024. p. 10. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20240313192842/https://cabforum.org/uploads/Baseline-Requirements-for-the-Issuance-and-Management-of-Code-Signing.v3.7.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on March 13, 2024<span class="reference-accessdate">. Retrieved <span class="nowrap">March 22,</span> 2024</span>. <q>(Section 1.2.2) [...] Effective June 1, 2023, for Code Signing Certificates, CAs SHALL ensure that the Subscriber's Private Key is generated, stored, and used in a suitable Hardware Crypto Module that meets or exceeds the requirements specified in section 6.2.7.4.1 using one of the methods in 6.2.7.4.2.</q></cite></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://about.signpath.io/code-signing/private-keys">"Code Signing - Storage of Private Keys | SignPath"</a>. <i>SignPath - Code Signing Simple and Secure</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20240308134445/https://about.signpath.io/code-signing/private-keys">Archived</a> from the original on 2024-03-08<span class="reference-accessdate">. Retrieved <span class="nowrap">2024-03-13</span></span>.</cite></span>
</li>
<li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://knowledge.digicert.com/alerts/code-signing-changes">"Code signing changes in 2021"</a>. <i>knowledge.digicert.com</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20231210113217/https://knowledge.digicert.com/alerts/code-signing-changes">Archived</a> from the original on 2023-12-10<span class="reference-accessdate">. Retrieved <span class="nowrap">2024-03-13</span></span>.</cite></span>
</li>
<li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://knowledge.digicert.com/alerts/code-signings-new-private-key-storage-requirement">"DigiCert timeline: Code signing's new private key storage requirement"</a>. <i>knowledge.digicert.com</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20231208160331/https://knowledge.digicert.com/alerts/code-signings-new-private-key-storage-requirement">Archived</a> from the original on 2023-12-08<span class="reference-accessdate">. Retrieved <span class="nowrap">2024-03-13</span></span>.</cite></span>
</li>
<li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://signmycode.com/blog/ca-b-forum-code-signing-baseline-requirements-v2-8">"New private key storage requirement for Code Signing certificates"</a>. <i>signmycode.com</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20250715155344/https://signmycode.com/blog/ca-b-forum-code-signing-baseline-requirements-v2-8">Archived</a> from the original on 2025-07-15<span class="reference-accessdate">. Retrieved <span class="nowrap">2023-05-30</span></span>.</cite></span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://lists.cabforum.org/pipermail/cscwg-public/2022-September/000891.html">"[CSCWG-public] Voting results Ballot CSCWG-17: Subscriber Private Key Extension"</a>. 26 September 2022. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20221205115050/https://lists.cabforum.org/pipermail/cscwg-public/2022-September/000891.html">Archived</a> from the original on 2022-12-05<span class="reference-accessdate">. Retrieved <span class="nowrap">2024-03-13</span></span>.</cite></span>
</li>
<li id="cite_note-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-25">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.ssl.com/article/code-signing-key-storage-requirements-will-change-on-june-1-2023/">"Code Signing Key Storage Requirements Will Change on June 1, 2023"</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20231002022841/https://www.ssl.com/article/code-signing-key-storage-requirements-will-change-on-june-1-2023/">Archived</a> from the original on October 2, 2023<span class="reference-accessdate">. Retrieved <span class="nowrap">March 13,</span> 2024</span>.</cite></span>
</li>
<li id="cite_note-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-26">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.sslpoint.com/new-private-key-storage-requirement-for-standard-code-signing-certificates/">"🥇 New private key storage requirement for all Code Signing certificates - June 2023 (Update)"</a>. <i>SSLPOINT</i>. September 23, 2022. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20230922124103/https://www.sslpoint.com/new-private-key-storage-requirement-for-standard-code-signing-certificates/">Archived</a> from the original on September 22, 2023<span class="reference-accessdate">. Retrieved <span class="nowrap">March 13,</span> 2024</span>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://developer.apple.com/library/content/documentation/Security/Conceptual/CodeSigningGuide/">Apple Code Signing Guide</a></li>
<li><a rel="nofollow" class="external text" href="http://msdn2.microsoft.com/en-us/library/ms537361.aspx">Microsoft Introduction to Code Signing</a></li>
<li><a rel="nofollow" class="external text" href="https://www.debian.org/doc/manuals/securing-debian-manual/ch07.en.html">Debian Security Infrastructure</a></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20140409005555/http://www.cryptnet.net/fdp/crypto/strong_distro.html">Strong Distribution HOWTO</a></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-08-07" href="https://en.wikipedia.org/wiki/?title=Code_signing&oldid=1304617383">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>